1. Field
This invention relates generally to data communications, and more specifically, to a service gateway.
2. Background
Many service gateways such as firewalls and server load balancers provide Transmission Control Protocol (TCP) proxy functionality for some time. Typical uses of TCP proxy include network analysis, security, and traffic adaptation due to asymmetric client and server condition. A TCP proxy server typically allocates a fix amount of memory buffer to handle the data packet buffering of a TCP proxy session between a client device and a server. The memory buffer is used to handle data packet buffers for client side session and server side session. The allocation of memory space among the client side session send and receive buffers, and server side session send and receive buffers does not often take performance into consideration. Common allocation methods include equally dividing the memory buffer among the session send and receive buffers, or a fix weighted average between the send and receive buffers, such as two to one ratio between server side receive buffer and client side send buffer.
Although TCP proxy is known for some time, it has not been used in any significant way. The correlation between the buffer allocation method and the performance of the TCP proxy session is not well understood. Today, many service gateway applications such as HTTP proxy, content filtering applications, advanced server load balancing methods, are deployed widely. Performance of these applications is in part depending on the performance of the TCP proxy session buffer allocation method.
Due to the different and dynamic network characteristics of client devices and servers, a pre-determined allocation of buffer spaces does not perform well on different network conditions. Therefore there is a need to allocate buffer spaces for a TCP proxy session based on one or more dynamic network conditions.